A database consists of one or more large sets of persistent data. Typically, users can update and query the database using software associated with the database.
A database is the data stored by a database management system (DBMS). A DBMS is a set of software programs that control the organization, storage, and retrieval of data in a database. A DBMS also controls the security and integrity of the database. Typically, a DBMS also provides an interactive query facility, which allows a user to interactively search and analyze data from the database.
There are several prior art methods available for organizing data in a database. The three most common types of prior art databases are hierarchical, network, and relational. A DBMS may provide one or more of these, and other, types of database organization.
In a hierarchical database, the data items are referred to as records, and are stored in a tree structure. Hierarchical databases link records together in a manner similar to a typical organization chart. This means that each record can be owned by only one owner record. For example, a department record may "own" fifteen employee records. However, each employee record may only be owned by one owner record, in this case by its department record. This makes it difficult to model real world situations using a hierarchical database. For example, an employee may be both a member of a department and a member of a team made up of employees from several departments. However, a hierarchical database would not allow the same employee record to be owned by both a department record and a team record.
A network database is similar to a hierarchical database, however, data records may be freely interconnected, with no requirement that the data records fit in a tree structure. In a network database, an employee record could be owned by both a department record and a team record.
Both hierarchical databases and network databases are time-consuming to search and difficult to change. Changing the data structures in a hierarchical or a network database typically requires shutting down the database and rebuilding it.
Another type of prior art database is a relational database. In a relational database, all data is stored in simple tables, referred to as relations. Relational databases remove the complex relationships between records found in hierarchical and network databases. The design of the records in a relational database provides a common field, such as employee number, for matching. Often, the fields used for matching are indexed in order to speed up searching.
However, there are several disadvantages to relational databases. Relational databases are complex and unnatural for many data structures (i.e. network type data structures). Relational databases are redundant, as many fields are stored in more than one relation. While the use of index fields can increase query speed, the space needed to store the indexes can sometimes become significantly larger than the space needed to store the data in the database. The use of indexes is also redundant. This redundancy, along with the redundant storage of data fields in more than one relation, can cause performance degradation when there are a high volume of updates to the database. Finally, the administration cost of a relational database is high, as data must be frequently reorganized to keep performance acceptable.
Because of the many disadvantages of prior art databases, such as hierarchical, network, and relational models, some software manufacturers have begun developing object-oriented databases (OODBs). However, the OODBs that exist today use traditional storage technology (i.e. relational and other) to actually store the data. Current OODBs and object database management systems (ODMSs) are really object-oriented interfaces to old database technologies and old database management systems. Current OODBs and ODMSs actually try, although not very successfully, to use today's currently existing technology (i.e. relational and other) to store object-oriented data.
Consequently, it would be desirable to have a database, and database management system and method, for organizing data so that it can be accessed as if it were any conceivable database organization, including those discussed above. It would be desirable if the system and method could support many simultaneous, different access methods and storage/retrieval syntaxes. Further, it would be desirable if the system and method allowed fast and efficient searching, dynamic schema evolution with no need to take the database off-line for restructuring, and automatic history generation.